import { reqCategoryList, reqGetBannerList, reqFloorList } from '@/API'
// Home 模块的小仓库 getBannerList
// state: 仓库存储数据的地方
const state = {
  // state中数据默认初始值别瞎写，服务器返回对象，服务器返回数组。[根据接口返回值初始化的]
  categoryList: [],
  // 轮播图的数据
  bannerList: [],
  // 家用电器数据
  floorList: []
}
// mutations: 修改 state 的唯一手段
const mutations = {
  CATEGORYLIST(state, categoryList) {
    state.categoryList = categoryList
  },
  GETBANNERLIST(state, bannerList) {
    state.bannerList = bannerList
  },
  GETFLLORLIST(state, floorList) {
    state.floorList = floorList
  }
}
// action: 处理 action，可以书写自己的业务逻辑，也可以处理异步
const actions = {
  // 通过API里面的接口函数调用，向服务器发请求，获取服务器的数据
  async categoryList({ commit }) {
    const result = await reqCategoryList()
    if (result.code === 200) {
      commit('CATEGORYLIST', result.data)
    }
  },
  // 获取首页轮播图数据
  async getBannerList({ commit }) {
    const result = await reqGetBannerList()
    if (result.code === 200) {
      commit('GETBANNERLIST', result.data)
    }
  },
  async getFloorList({ commit }) {
    const result = await reqFloorList()
    if (result.code === 200) {
      commit('GETFLLORLIST', result.data)
    }
  }
}
// getters: 理解为计算属性，用于简化仓库数据，让组件获取仓库的数据更加方法
const getters = {}

// 对外暴露 store 类的一个实例
export default {
  state,
  mutations,
  actions,
  getters
}
